package client_proxy

import (
	"learn_grpc/1_Rpc/5_client_loca_rpc/handler"
	"net/rpc"
)

/*
封装client，让客户端在使用client是不用关注服务端的服务名，可以直接client.方法可以直接调用，不用call
*/

type HelloServviceStub struct {
	*rpc.Client //注意这个使继承其他方法的格式，采用指针引用
}

// 在go语言中没有类对象就意味着没有初始化方法
func NewHelloServviceClinet(protcol, address string) HelloServviceStub {
	conn, err := rpc.Dial(protcol, address)
	if err != nil {
		panic(err)
	}
	// {}代表返回结构体实例化之后的
	return HelloServviceStub{conn}

}

func (c *HelloServviceStub) Hello(request string, reply *string) error {
	err := c.Call(handler.HolleWorldServer_1+".Hello", request, reply)
	if err != nil {
		panic(err)
	}
	return nil
}
